package Song.Han.demo05;

import java.util.Objects;

/*
线程之间的通信
*/
public class Demo01WaitAndNotify {
    public static void main(String[] args) {

        //1.创建锁对象，保证唯一
        Object obj = new Object();

        //创建顾客线程
        new Thread(){
            @Override
            public void run(){
                //保证等待和唤醒的线程只能有一个执行
                synchronized (obj){
                    System.out.println("告知老板，要的包子的种类和数量");
                    try{
                        obj.wait();
                    }catch (InterruptedException e){
                        e.printStackTrace();
                    }
                    System.out.println("包子做好了，可以吃了");
                }
            }
        }.start();

        //创建老板的线程
        new Thread(){
            @Override
            public void run(){
                    System.out.println("老板准备开始做包子");
                    try{
                        //花5秒钟做包子
                        Thread.sleep(5000);
                    }catch (InterruptedException e){
                        e.printStackTrace();
                    }
                //保证等待和唤醒的线程只能有一个执行
                synchronized (obj){
                    obj.notify();//唤醒后执行wait()之后的代码
                    System.out.println("5s后");
                }
            }
        }.start();
    }
}
